// import { defineConfig } from "vite";
// import uni from "@dcloudio/vite-plugin-uni";

// // https://vitejs.dev/config/
// export default defineConfig({
//   plugins: [uni()],
// });
/** @type {import('vite').UserConfig} */
import { defineConfig, loadEnv } from 'vite'
import uni from '@dcloudio/vite-plugin-uni';
import path from 'path';
import fs from 'fs-extra';
import { terser } from 'rollup-plugin-terser';
import commonjs from '@rollup/plugin-commonjs';
// import inject from '@rollup/plugin-inject';


//自定义静态资源目录
function copyFile() {
	return {
		enforce: 'post',
		async writeBundle() {
			// await fs.copy(
			// 	path.resolve(__dirname, 'images'),
			// 	path.join(
			// 		__dirname,
			// 		'unpackage/dist',
			// 		process.env.NODE_ENV === 'production' ? 'build' : 'dev',
			// 		process.env.UNI_PLATFORM,
			// 		'images',
			// 	)
			// );
			// await fs.copy(
			// 	path.resolve(__dirname,'public'),
			// 	path.join(
			// 		__dirname,
			// 		'unpackage/dist',
			// 		process.env.NODE_ENV === 'production' ? 'build' : 'dev',
			// 		process.env.UNI_PLATFORM,
			// 		'public'
			// 	)
			// );
		},
	};
}

// 读取 manifest.json ，修改后重新写入
const manifestPath = __dirname+'/vite.config.ts';
let Manifest = fs.readFileSync(manifestPath, { encoding: 'utf-8' });
function replaceManifest(path, value) {
	const arr = path.split('.');
	const len = arr.length;
	const lastItem = arr[len - 1];

	let i = 0;
	let ManifestArr = Manifest.split(/\n/);

	for (let index = 0; index < ManifestArr.length; index++) {
		const item = ManifestArr[index];
		if (new RegExp(`"${arr[i]}"`).test(item)) ++i;
		if (i === len) {
			const hasComma = /,/.test(item);
			ManifestArr[index] = item.replace(
				new RegExp(`"${lastItem}"[\\s\\S]*:[\\s\\S]*`),
				`"${lastItem}": ${value}${hasComma ? ',' : ''}`
			);
			break;
		}
	}

	Manifest = ManifestArr.join('\n');
}
// 使用
// replaceManifest('app-plus.usingComponents', false);
// replaceManifest('app-plus.splashscreen.alwaysShowBeforeRender', false);
// replaceManifest('mp-baidu.usingComponents', false);
fs.writeFileSync(manifestPath, Manifest, {
	flag: 'w',
});
export default defineConfig(({ command, mode }) => {
  // 根据当前工作目录中的 `mode` 加载 .env 文件
  // 设置第三个参数为 '' 来加载所有环境变量，而不管是否有 `VITE_` 前缀。
  // 设置第二个参数 vite客户端执行根目录 HBuilder 下 D:\HBuilderX.3.3.11.20220209.full\HBuilderX\plugins\uniapp-cli-vite
  // __dirname 表示当前配置文件所在目录
  const env = loadEnv(mode, __dirname+'/config', '')
  let define = {}
  for (const [key, val] of Object.entries(env)) {
	if(env.ENV_LOAD){
		const regexp=new RegExp(env.ENV_LOAD);
		if(regexp.test(key)){
			define['process.env.'+key]=JSON.stringify(val)
		}
	}else{
		define['process.env.'+key]=JSON.stringify(val)
	}
  }
  return {
	// root: process.cwd(),
	// base: '/',
	// mode: mode,
	envDir: __dirname+'/config',
	logLevel: 'info',
	plugins: [uni(),copyFile()],
	server:{
		host: true,
		port: 8090,
		strictPort: false,
		cors: true
		// proxy: {
		// 	'/customer': {
		// 		target: 'http://172.16.2.232:8098', //目标域名
		// 		// target: 'http://localhost:9920/',
		// 		changeOrigin: true, // 是否允许跨域
		// 		ws: true, // 如果要代理 websockets，配置这个参数
		// 		pathRewrite: {
		// 		  '^/customer': '' // 接口重写
		// 		}
		// 	  },
		// }
	},
	build: {
		minify: 'terser',
		terserOptions: {
			compress: {
				// drop_console: true,
			},
		},
		// rollupOptions:{
		// 	 output: [
		// 	    {
		// 	      file: 'bundle.js',
		// 	      format: 'cjs'
		// 	    },
		// 	    {
		// 	      file: 'bundle.min.js',
		// 	      format: 'iife',
		// 	      name: 'version',
		// 	      plugins: [terser()]
		// 	    }
		// 	  ],
		// },
		commonjsOptions:{
			transformMixedEsModules: true,
			include: ['@/static/minio/*.js'],
		 //  dynamicRequireTargets: [
			// // include using a glob pattern (either a string or an array of strings)
			// 'node_modules/minio/*.js',
		 //  ]
		}
	},
    // vite 配置
    define: define,
  }
})